package com.superquan.selfstudybootmybatis.utils.singleton;

/**
 * @program: self-study-bootmybatis
 * @ClassName StaticPattern
 * @description: 静态内部类实现单例模式
 * @author: zwq
 **/
public class StaticPattern {

    private StaticPattern() {
        System.out.println("私有构造参数初始化");
    }

    //定义一个静态内部类，真正使用调用时初始化StaticPattern类,不会产生无用对象，并且加载类是线程安全的。
    public static class SingletonClassInstance{
        private static final StaticPattern staticPattern=new StaticPattern();
    }

    //getInstance方法：用于提供一种访问其唯一的对象的方式
    //方法没有同步
    public static StaticPattern getInstance(){
        return SingletonClassInstance.staticPattern;
    }

    public static void main(String[] args) {
        StaticPattern sp1 = StaticPattern.getInstance();
        StaticPattern sp2 = StaticPattern.getInstance();
        //"=="比较的是引用，若未true则说明hp1和hp2是同一个实例
        if(sp1==sp2){
            System.out.println("StaticPattern使用了静态内部类单例模式，因此sp1和sp2是同一个实例");
        }
    }
}
